End developers face the tedious task of having to manually maintain consistency among multiple sets of files. The end developers must maintain the consistency of source code that is unique and original and the code that is implied by the unique and original source code. Annotations are pieces of metadata which can be associated with program elements such as classes, fields, and methods. An intended use of annotations involves having annotations in a base file hold information that is used to generate new derived files. These new derived files must be logically consistent with the base file and its annotations. The end developer must maintain the consistency for each set of code; to ease development the generation of the derived files should be automated.
One attempt to provide assistance to end developers could be through the use of the Javadoc program. Javadoc is a program used to create the Hyper Text Markup Language (HTML)-format JAVA™ API documentation. It is distributed as part of the JAVA™ SDK and its output stage is designed to be extensible through Doclet creation. The Doclet API provides the infrastructure to access all aspects of a JAVA™ source-code file that has been parsed by Javadoc. By using the Doclet API, a user can walk through a JAVA™ class description, access custom Javadoc tags, and write output to a file. However, the Javadoc program is limited to running a single Doclet and no properties of the Doclet are queried to determine if the Doclet should be run. Therefore, it is impractical to automatically find and run a doclet appropriate to the annotations present on the original source code. Accordingly, the Javadoc program is not a viable solution to the end developers to alleviate some of the above mentioned tedium.
In light of the foregoing, it is desirable to implement a scheme for alleviating the burden requiring end developers to maintain consistency of multiple sets of files through a tool that provides the infrastructure to allow third parties to generate implied code. In addition, it would be beneficial to have the capability to perform annotation processing irrespective of whether the annotations originate from a source file or a class file.